@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

:: 企业微信H5应用部署验证脚本 (Windows版本)
:: 用于验证企业微信登录功能是否正常工作

echo ===== 企业微信H5应用部署验证 =====
echo 开始时间: %date% %time%
echo.

:: 配置信息
set BASE_URL=http://localhost:6724
set FRONTEND_URL=http://localhost:5173

:: 检查端口函数
:check_port
set port=%1
set service=%2
echo 检查端口 %port% (%service%) ...
netstat -an | findstr ":%port% " >nul 2>&1
if !errorlevel! equ 0 (
    echo   ✓ 正常 - 端口 %port% 正在监听
) else (
    echo   ✗ 异常 - 端口 %port% 未监听
)
goto :eof

:: 检查HTTP服务函数
:check_http
set name=%1
set url=%2
echo 检查 %name% ...
curl -s -o nul -w "%%{http_code}" "%url%" >temp_response.txt 2>nul
if exist temp_response.txt (
    set /p response=<temp_response.txt
    del temp_response.txt >nul 2>&1
    if "!response!" == "200" (
        echo   ✓ 正常 - HTTP !response!
    ) else if "!response!" == "401" (
        echo   ✓ 正常 - HTTP !response! ^(需要认证^)
    ) else if "!response!" == "404" (
        echo   ⚠ 警告 - HTTP !response! ^(未找到^)
    ) else (
        echo   ✗ 异常 - HTTP !response!
    )
) else (
    echo   ✗ 异常 - 无法连接
)
goto :eof

:: 检查文件函数
:check_file
set file=%1
set description=%2
echo 检查 %description% ...
if exist "%file%" (
    echo   ✓ 存在 - %file%
) else (
    echo   ✗ 不存在 - %file%
)
goto :eof

:: 检查目录函数
:check_directory
set dir=%1
set description=%2
echo 检查 %description% ...
if exist "%dir%" (
    echo   ✓ 存在 - %dir%
) else (
    echo   ✗ 不存在 - %dir%
)
goto :eof

echo 1. 基础服务检查
echo ==================
call :check_port 6724 "后端API服务"
call :check_port 5173 "前端开发服务"

echo.
echo 2. HTTP服务检查
echo ================
call :check_http "后端API健康检查" "%BASE_URL%/health"
call :check_http "Swagger文档" "%BASE_URL%/swagger"
call :check_http "前端应用" "%FRONTEND_URL%"

echo.
echo 3. 企业微信相关接口检查
echo ======================
call :check_http "企业微信登录接口" "%BASE_URL%/api/auth/wechat-login"
call :check_http "JS-SDK配置接口" "%BASE_URL%/api/wechat/js-config"

echo.
echo 4. 关键文件检查
echo ================

:: 检查后端关键文件
call :check_file "Controllers\AuthController.cs" "认证控制器"
call :check_file "Controllers\WeChatController.cs" "企业微信控制器"
call :check_file "Services\IWeChatService.cs" "企业微信服务接口"
call :check_file "Services\WeChatService.cs" "企业微信服务实现"
call :check_file "Middleware\WeChatAccessMiddleware.cs" "企业微信访问中间件"

:: 检查前端关键文件
call :check_file "RefundAuditAndroid\src\views\LoginMobile.vue" "移动端登录页面"
call :check_file "RefundAuditAndroid\src\views\WeChatTest.vue" "企业微信测试页面"
call :check_file "RefundAuditAndroid\src\stores\auth.js" "认证状态管理"
call :check_file "RefundAuditAndroid\src\utils\wechat.js" "企业微信工具类"

echo.
echo 5. 配置文件检查
echo ================
call :check_file "appsettings.json" "应用配置文件"
call :check_file "appsettings.Development.json" "开发环境配置"

:: 检查企业微信配置
echo 检查企业微信配置 ...
if exist "appsettings.json" (
    findstr /i "WeChat" "appsettings.json" >nul 2>&1
    if !errorlevel! equ 0 (
        echo   ✓ 已配置 - 企业微信配置存在
    ) else (
        echo   ⚠ 警告 - 企业微信配置未找到
    )
) else (
    echo   ✗ 异常 - 配置文件不存在
)

echo.
echo 6. 前端路由检查
echo ================
echo 检查企业微信测试路由 ...
if exist "RefundAuditAndroid\src\router\index.js" (
    findstr /i "wechat-test" "RefundAuditAndroid\src\router\index.js" >nul 2>&1
    if !errorlevel! equ 0 (
        echo   ✓ 已配置 - 企业微信测试路由存在
    ) else (
        echo   ✗ 异常 - 企业微信测试路由未配置
    )
) else (
    echo   ✗ 异常 - 路由配置文件不存在
)

echo.
echo 7. 部署建议
echo ============
echo ✓ 确保企业微信应用已在管理后台正确配置
echo ✓ 确保可信域名已添加到企业微信应用配置
echo ✓ 确保SSL证书已正确配置（生产环境必需）
echo ✓ 确保防火墙已开放相应端口
echo ✓ 建议配置反向代理（IIS/Nginx）
echo ✓ 建议配置Windows服务或任务计划程序

echo.
echo 8. 测试建议
echo ============
echo 1. 在企业微信中访问: %FRONTEND_URL%
echo 2. 测试企业微信登录功能
echo 3. 访问测试页面: %FRONTEND_URL%/#/wechat-test
echo 4. 检查浏览器控制台是否有错误
echo 5. 检查网络请求是否正常

echo.
echo 9. 常用命令
echo ============
echo 启动后端服务: dotnet run
echo 启动前端服务: cd RefundAuditAndroid ^&^& npm run dev
echo 查看端口占用: netstat -an ^| findstr ":6724 :5173"
echo 检查进程: tasklist ^| findstr "dotnet node"

echo.
echo ===== 验证完成 =====
echo 结束时间: %date% %time%

pause